const { usersModel } = require("../models/userModel");
const jwt = require("jsonwebtoken");
const { uploadFiles,deleteFiles } = require('../utils/handleFiles');
// skip（）limit函数的时候要求必须传递number类型

// 这是登录函数
async function userLogin(req, res, next) {
    const { userPhone, passWord } = req.body;
    console.log(userPhone, passWord);
    let users = await usersModel.find({ userPhone, passWord });
    if (users.length > 0) {
        const token = jwt.sign(
            { _id: users[0]._id }, //在token里面保存用户信息
            "miyao", //需要一个密钥,是一个字符串，内容自己定义
            { expiresIn: 3600 } //当前这个token在100s以内是有效果，超过这个时间失效
        )
        res.send({
            message: "登陆成功",
            code: 200,
            // user: users[0],
            token: "Bearer " + token
        });
    }else if(users.length == 0){
        res.send({
            message: "登陆失败",
        });
    }
}



// 这是注册函数
async function register(req, res, next) {
    const { userPhone, passWord } = req.body;
    let users = await usersModel.find({ userPhone, passWord });
    if (users.length == 0) {
        await usersModel.create({ userPhone, passWord });
        let users0 = await usersModel.find({ userPhone, passWord });
        const token = jwt.sign(
            { _id: users0[0]._id }, //在token里面保存用户信息
            "miyao", //需要一个密钥,是一个字符串，内容自己定义
            { expiresIn: 3600 } //当前这个token在100s以内是有效果，超过这个时间失效
        )
        res.send({
            message: "注册成功",
            code: 200,
            user: users0[0],
            token: "Bearer " + token
        });
        // res.send({
        //     message: "注册成功",
        //     code: 200,
        //     user: users0[0]
        // });
    } else {
        res.send({
            message: "注册失败",
            code: 1,
        });
    }
}
// 这是获取个人信息渲染函数
async function getuser(req, res, next) {
    const { userPhone } = req.body;
    console.log("*********");
    let users = await usersModel.find({ userPhone });
    console.log("---------");
    res.send(users);
}
// 这是修改个人信息函数
// async function amend(req, res, next) {
//     const { userPhone, passWord } = req.body;
//     let users = await usersModel.find({ userPhone, passWord });
//     if (users.length == 0) {
//         await usersModel.create({ userPhone, passWord });
//         let users0 = await usersModel.find({ userPhone, passWord });
//         res.send({
//             message: "注册成功",
//             code: 200,
//             user: users0[0]
//         });
//     } else {
//         res.send({
//             message: "注册失败",
//             code: 1,
//         });
//     }
// }



async function amend(req, res, next) {
    const { userPhone,imagePath, userName,userGender } = req.body;
    // const path = require("path") //Nodejs提供模块，可以获取到项目目录的绝对路径
    // console.log(path.resolve(__dirname,"../"+"/public/"+imagePath));
    await usersModel.updateMany({userPhone},{ imagePath, userName,userGender });
    let users = await usersModel.find({ userPhone });
    res.send(users);
}

// 上传图片
function images(req, res, next) {
    // 图片上传
    const uploadImages = uploadFiles({
        // 图片上传成功后的存储路径
        path: './public/images',
        // key: 'file',
        // size: 1000
    });
    uploadImages(req, res, (error) => {
        if(error) {
            console.log('图片上传失败', error);
        } else {
            console.log('图片上传成功');
            // 输出上传成功后的图片信息
            console.log(req.files);
            res.send({
                message: '图片上传成功',
                code: 200,
                data: './images/' + req.files[0].filename
            })
        }
    });
}
// 删除图片
async function getJurl(req, res, next) {
    let {imgurl}=req.body;
    // await studentsModel.create({name,age,sex,classId,imgSrc});
    const path = require("path") //Nodejs提供模块，可以获取到项目目录的绝对路径
    console.log("***************")
      deleteFiles(path.resolve(__dirname,"../"+"/public/"+imgurl))
      console.log("------------------------")
    let imageUrl=path.resolve(__dirname,"../"+"/public/"+imgurl)
    res.send(imageUrl);
  }
async function zzz(req, res, next) {
    let users = await usersModel.find({});
    res.send(users);
  }
module.exports = {
    userLogin, register,amend, getuser,images,getJurl,zzz
}

